package com.mm.cloud.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mm.cloud.common.core.result.Result;
import com.mm.cloud.feign.sys.api.dto.BtnPermissionCodeFeignDTO;
import com.mm.cloud.sys.dto.form.PermissionDTO;
import com.mm.cloud.sys.dto.query.QueryPermissionDTO;
import com.mm.cloud.sys.entity.Permission;
import com.mm.cloud.sys.vo.PermissionVO;
import com.mm.cloud.sys.vo.RouterVO;
import jakarta.validation.constraints.NotNull;

import java.util.List;

/**
 * <p>
 * 资源基础信息 服务类
 * </p>
 *
 * @author mr
 * @since 2020-09-15
 */
public interface IPermissionService extends IService<Permission> {

    /**
     * 查询所有资源
     *
     * @return
     */
    Result<List<PermissionVO>> getPermissionList(QueryPermissionDTO dto);

    /**
     * 新增资源
     *
     * @param dto
     * @return
     */
    Result<String> savePermission(PermissionDTO dto);

    /**
     * 修改资源
     *
     * @param dto
     * @return
     */
    Result<String> updatePermission(PermissionDTO dto);

    /**
     * 删除资源
     *
     * @param permissionId 资源ID
     * @return
     */
    Result<String> deletePermission(@NotNull(message = "参数不能为空") Long permissionId);

    /**
     * 初始化菜单
     *
     * @param platformType
     * @return
     */
    Result<List<RouterVO>> init(Byte platformType);

    /**
     * 查询操作权限
     *
     * @param dto
     * @return
     */
    Result<List<String>> getBtnPermissionCode(BtnPermissionCodeFeignDTO dto);
}
